//DP
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;

LL a=0,b=0,c=0;
LL gra[23][23][23];
LL w(LL a,LL b,LL c){
	if(a<=0||b<=0||c<=0) return 1;
	if(a>20||b>20||c>20) return w(20,20,20);
	if(a<b&&b<c) return w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c);
	else{
		return w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1);
	}
}
int main(){
	for(int i=0;i<21;i++){
		for(int j=0;j<21;j++){
			gra[0][i][j]=1;
			gra[i][0][j]=1;
			gra[i][j][0]=1;
		}
	}
	for(int i=1;i<=20;i++){
		for(int j=1;j<=i;j++){
			for(int k=1;k<=20;k++){
				gra[i][j][k]=gra[i-1][j][k]+gra[i-1][j-1][k]+gra[i-1][j][k-1]-gra[i-1][j-1][k-1];
			}
		}
		for(int j=i+1;j<=20;j++){
			for(int k=1;k<=j;k++){
				gra[i][j][k]=gra[i-1][j][k]+gra[i-1][j-1][k]+gra[i-1][j][k-1]-gra[i-1][j-1][k-1];
			}
		}
		for(int j=i+1;j<=20;j++){
			for(int k=j+1;k<=20;k++){
				gra[i][j][k]=gra[i][j][k-1]+gra[i][j-1][k-1]-gra[i][j-1][k];
			}
		}
	}
	for(;;){
		scanf("%lld%lld%lld",&a,&b,&c);
		if(a==-1&&b==-1&&c==-1) break;
		if(a<=0||b<=0||c<=0){
			printf("w(%lld, %lld, %lld) = 1\n",a,b,c);
		}
		else if(a>20||b>20||c>20){
			printf("w(%lld, %lld, %lld) = %lld\n",a,b,c,gra[20][20][20]);
		}
		else{
			printf("w(%lld, %lld, %lld) = %lld\n",a,b,c,gra[a][b][c]);
		}
	}
	return 0;
}


//#include<bits/stdc++.h>
//using namespace std;
//typedef long long LL;
//
//LL a=0,b=0,c=0;
//LL gra[23][23][23];
//bool vis[23][23][23];
//LL w(LL a,LL b,LL c){
//	if(a<=0||b<=0||c<=0) return 1;
//	if(a>20||b>20||c>20) {
//		return w(20,20,20);
//	}
//	if(vis[a][b][c]) return gra[a][b][c];
//	if(a<b&&b<c) {
//		gra[a][b][c]=w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c);
//	}
//	else{
//		gra[a][b][c]=w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1);
//	}
//	vis[a][b][c]=true;
//	return gra[a][b][c];
//}
//int main(){
//	memset(vis,false,sizeof(vis));
//	for(;;){
//		scanf("%lld%lld%lld",&a,&b,&c);
//		if(a==-1&&b==-1&&c==-1) break;
//		printf("w(%lld, %lld, %lld) = %lld\n",a,b,c,w(a,b,c));
//	}
//	return 0;
//}
